import os import os.path import json ########### Fonctions données ########### def chargement_json(nom_fichier): """Charge le contenu d'un fichier JSON dans un dictionnaire Python renvoyé""" with open(nom_fichier, "r", encoding="utf8") as curseur: return json.load(curseur) def sauvegarde_json(dictionnaire, nom_fichier): """Sauvegarde le contenu d'un dictionnaire dans un fichier JSON""" with open(nom_fichier, "w", encoding="utf8") as curseur: json.dump(dictionnaire, curseur) def est_dictionnaire(objet): """Teste si un objet est de type dictionnaire""" return isinstance(objet, dict) ########################################## ### Première fonction à implémenter après avoir découvert le fichier JSON agrégé ### Cf fichier `empreinte_ada_agr.json` def total_simple(empreinte): """Fonction qui renvoie l'empreinte carbone totale d'un dictionnaire associant une empreinte carbone à des noms de catégories""" pass ### Deuxième fonction : il faut la récursivité pour le cas des sous-catégories ### Cf fichier `empreinte_ada.json` def total_rec(empreinte): """Fonction récursive qui renvoie l'empreinte carbone totale représentée par un dictionnaire dont les valeurs peuvent aussi être des dictionnaires""" pass def test_total_rec(): test_dico1 = {"a": 1, "d": 2} assert total_rec(test_dico1) == 3 test_dico2 = {"a": {"b": 1, "c": 2}, "d": {"e": 3}} assert total_rec(test_dico2) == 6 # ========================================== # Fonction à analyser et corriger (Question 3) # ========================================== def alerte_valeur_aberrante(empreinte, limite): """ Fonction censée déterminer si au moins une valeur du dictionnaire dépasse strictement la limite donnée. """ for categorie, valeur in empreinte.items(): if est_dictionnaire(valeur): return alerte_valeur_aberrante(valeur, limite) else: if valeur > limite: return True return False